home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / archiver / uudecode.bas < prev    next >
BASIC Source File  |  1995-04-22  |  5KB  |  118 lines

  1. 1 GOTO 100:REM jump around time-critical stuff to start up program.
  2. 2 M=USR(UUDADR)
  3. 10 IF M=0 THEN 2090
  4. 20 IF M>OBUFDIM THEN ? "Error at line 20, M=";M:GOTO 3000
  5. 30 PRINT #2;OBUF$;:BYTES=BYTES+M
  6. 40 INPUT #1,IBUF$:L=LEN(IBUF$)+1:IF L<62 THEN IBUF$(L)=" ":IBUF$(L+1)=IBUF$(L)
  7. 50 GOTO 2
  8. 100 ? "Uudecode Ver. 1.2a":? "Report errors to John Sangster at"
  9. 101 ? "(617) 235-8753/jhs@mitre-bedford.arpa":? 
  10. 102 POKE 6,1:REM Turn BASIC flag ON.
  11. 105 DIM OBUF$(80),IBUF$(62),OFILE$(16),IFILE$(16),A$(1)
  12. 110 DIM UUDECODE$(400)
  13. 120 UUDADR=ADR(UUDECODE$):IBUF=ADR(IBUF$):OBUF=ADR(OBUF$)
  14. 130 OBUFDIM=80:UUDDIM=400:BEEP=150:RETRY=500
  15. 140 GOTO 200
  16. 149 REM BEEP Subroutine:
  17. 150 SOUND 0,85,10,15:FOR I=1 TO 80:NEXT I:SOUND 0,0,0,0:RETURN 
  18. 199 END 
  19. 200 ? "Loading uudecode subroutine..."
  20. 201 RESTORE 4000:POKADR=UUDADR:MAXADR=POKADR+UUDDIM-1:PRGTOP=UUDADR-1
  21. 202 READ X:IF X=255 THEN READ X:IF X=255 THEN 204
  22. 203 ? "BAD LOAD FILE FOR UUD":END 
  23. 204 READ LO1,HI1,LO2,HI2:BYTES=HI2*256+LO2-(HI1*256+LO1)+1:PRGTOP=PRGTOP+BYTES
  24. 205 IF BYTES<0 OR BYTES>UUDDIM THEN ? "BYTE COUNT ERROR FOR UUD":END 
  25. 206 FOR I=1 TO BYTES:READ X:POKE POKADR,X:POKADR=POKADR+1:IF POKADR>MAXADR THEN ? "UUD STRG OVFLOW!":END 
  26. 207 NEXT I
  27. 208 TRAP 209:READ LO1,HI1,LO2,HI2:BYTES=256*HI2+LO2-(256*HI1+LO1)+1
  28. 209 PRGTOP=PRGTOP+BYTES:IF LO1<>224 OR HI1<>2 THEN 206
  29. 500 REM COMMAND DISPATCHER
  30. 530 ? :? "INPUT FILE";:INPUT IFILE$:IF LEN(IFILE$)=0 THEN 530
  31. 540 ? :? "OUTPUT FILE SPEC OR":? "DEFAULT DEVICE ID";:INPUT OFILE$
  32. 550 L=LEN(OFILE$):IF L=0 THEN OFILE$="D1:":? :? "Output to D1: assumed.":? 
  33. 2000 ? "Beginning uudecode processing..."
  34. 2011 IBUF$(1,1)=" ":M=USR(UUDADR,IBUF,OBUF):IF M<>0 THEN ? "Error in initializing UUDECODE, line 2011; M=";M:? :END 
  35. 2019 TRAP 2020:CLOSE #1:OPEN #1,4,0,IFILE$:GOTO 2030
  36. 2020 ? "INPUT FILE NOT FOUND":GOSUB BEEP:GOTO RETRY
  37. 2030 INPUT #1,IBUF$:BYTES=0
  38. 2035 L=LEN(IBUF$):IF L>5 THEN L=5
  39. 2036 IF L=0 THEN L=1:IBUF$=" "
  40. 2040 TRAP 2095:IF IBUF$(1,L)<>"begin" THEN 2030:REM skip header
  41. 2042 ? IBUF$:REM Print "begin" line to screen & get OFILE$ if default case.
  42. 2043 L=LEN(OFILE$):IF L<=0 OR OFILE$(L)=":" THEN 2046
  43. 2044 TRAP 2050:CLOSE #2:OPEN #2,8,0,OFILE$:TRAP 2095:GOTO 40
  44. 2046 L=LEN(IBUF$):FOR I=L TO 1 STEP -1
  45. 2047 IF IBUF$(I,I)<>" " THEN 2049
  46. 2048 OFILE$(4)=IBUF$(I+1,L):GOTO 2044
  47. 2049 NEXT I
  48. 2050 ? "OUTPUT FILESPEC":INPUT OFILE$:IF LEN(OFILE$)=0 THEN 2050
  49. 2052 GOTO 2044
  50. 2090 INPUT #1,IBUF$:IF IBUF$(1,3)="end" THEN PRINT IBUF$:GOTO 3000
  51. 2095 NERR=PEEK(195):IF NERR=136 THEN PRINT "EOF unexpected!":GOTO 3000
  52. 2097 ? "Error Code=";NERR
  53. 3000 ? "Done!":CLOSE #1:CLOSE #2:? "Output byte count = ";BYTES:? :? 
  54. 3010 ? "More files to decode (Y/N)";:INPUT A$:IF A$="Y" OR A$="y" THEN 500
  55. 3020 DOS 
  56. 4000 DATA 255,255,8,6,3,7
  57. 4010 DATA 104,240,67,170,56,233
  58. 4020 DATA 2,240,14,104,104,202
  59. 4030 DATA 208,251,169,254,133,212
  60. 4040 DATA 169,255,133,213,96,104
  61. 4050 DATA 141,1,6,104,141,0
  62. 4060 DATA 6,104,141,3,6,104
  63. 4070 DATA 141,2,6,165,6,240
  64. 4080 DATA 100,165,134,133,203,165
  65. 4090 DATA 135,133,204,173,2,6
  66. 4100 DATA 56,229,140,133,208,173
  67. 4110 DATA 3,6,229,141,133,209
  68. 4120 DATA 162,128,208,2,240,72
  69. 4130 DATA 160,0,177,203,201,129
  70. 4140 DATA 208,42,160,2,177,203
  71. 4150 DATA 56,229,208,208,33,200
  72. 4160 DATA 177,203,229,209,208,26
  73. 4170 DATA 165,203,141,6,6,165
  74. 4180 DATA 204,141,7,6,160,6
  75. 4190 DATA 177,203,141,4,6,200
  76. 4200 DATA 177,203,141,5,6,24
  77. 4210 DATA 144,22,24,165,203,105
  78. 4220 DATA 8,133,203,144,2,230
  79. 4230 DATA 204,202,208,192,169,255
  80. 4240 DATA 133,212,133,213,96,234
  81. 4250 DATA 173,0,6,133,204,173
  82. 4260 DATA 1,6,133,205,160,0
  83. 4270 DATA 132,213,177,204,56,233
  84. 4280 DATA 32,41,63,133,212,208
  85. 4290 DATA 24,165,6,240,19,173
  86. 4300 DATA 6,6,133,208,173,7
  87. 4310 DATA 6,133,209,160,4,169
  88. 4320 DATA 0,145,208,200,145,208
  89. 4330 DATA 96,165,6,240,43,173
  90. 4340 DATA 4,6,56,229,212,173
  91. 4350 DATA 5,6,229,213,16,9
  92. 4360 DATA 169,255,133,212,133,213
  93. 4370 DATA 32,54,185,173,6,6
  94. 4380 DATA 133,208,173,7,6,133
  95. 4390 DATA 209,169,0,160,5,145
  96. 4400 DATA 208,136,165,212,145,208
  97. 4410 DATA 230,204,208,2,230,205
  98. 4420 DATA 173,2,6,133,206,173
  99. 4430 DATA 4,7,108,7,3,6
  100. 4440 DATA 133,207,166,212,160,1
  101. 4450 DATA 177,204,56,233,32,133
  102. 4460 DATA 203,6,203,6,203,136
  103. 4470 DATA 177,204,56,233,32,6
  104. 4480 DATA 203,42,6,203,42,145
  105. 4490 DATA 206,202,240,68,169,0
  106. 4500 DATA 133,208,160,2,177,204
  107. 4510 DATA 56,233,32,41,63,74
  108. 4520 DATA 102,208,74,102,208,5
  109. 4530 DATA 203,136,145,206,202,240
  110. 4540 DATA 41,160,3,177,204,56
  111. 4550 DATA 233,32,41,63,5,208
  112. 4560 DATA 136,145,206,202,240,24
  113. 4570 DATA 24,165,204,105,4,133
  114. 4580 DATA 204,144,2,230,205,24
  115. 4590 DATA 165,206,105,3,133,206
  116. 4600 DATA 144,162,230,207,176,158
  117. 4610 DATA 96,224,2,225,2,0
  118.